﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DB_QLSV;
using DB_QLSV.BusinessClassLibrary;

namespace UnittestDatabase
{
    public class DataGenerator
    {
        public static void ThemKhoa()
        {
            string[] ids = new string[] { "CNTT", "DTVT", "VL", "HH", "CNSH" };
            string[] names = new string[] { "Công nghệ thông tin", "Điện tử viễn thông", "Vật lý", "Hóa học", "Công nghệ sinh học" };
            for (int i = 0; i < 5; i++)
            {
                Khoa khoa = new Khoa();
                khoa.masokhoa = ids[i];
                khoa.tenkhoa = names[i];
                KhoaBUS.ThemKhoa(khoa);
            }
        }
        public static void ThemNganh()
        {
            string[] idKhoa=new string[]{"CNTT","DTVT","CNSH"};
            string[] nganhCNTT = new string[] {"Hệ thống thông tin", "khoa học máy tính","Quản trị mạng"};
            string[] nganhDTVT = new string[] { "Thiết kế mạch", "Sửa chữa điện thoại", "Quản trị mạng" };
            string[] nganhSH = new string[] { "Sinh học cơ bản","Di truyền học","Công nghệ lai"};
            string[] ids = new string[] {"HHTT","KHMT","QTM1","TKM","SCDT","QTM2","SHCB","DTH","CNL"};
            int id = 0;
            for (int i = 0; i < 3; i++)
            {
               
                    Nganh ng = new Nganh();
                    ng.masonganh = ids[id];
                    ng.khoa = idKhoa[0];
                    ng.tennganh = nganhCNTT[i];
                    NganhBUS.ThemNganh(ng);
                    id++;
            }
            for (int i = 0; i < 3; i++)
            {

                Nganh ng = new Nganh();
                ng.masonganh = ids[id];
                ng.khoa = idKhoa[1];
                ng.tennganh = nganhDTVT[i];
                NganhBUS.ThemNganh(ng);
                id++;
            }
            for (int i = 0; i < 3; i++)
            {

                Nganh ng = new Nganh();
                ng.masonganh = ids[id];
                ng.khoa = idKhoa[2];
                ng.tennganh = nganhSH[i];
                NganhBUS.ThemNganh(ng);
                id++;
            }
        }
        public static void ThemKhoaHoc()
        {
            string[] id = new string[] {"2006","2007","2008"};
            DateTime[] startTime = new DateTime[] { new DateTime(2006, 1, 1), new DateTime(2007, 1, 1), new DateTime(2008, 1, 1) };
            for (int i = 0; i < 3; i++)
            {
                KhoaHoc kh = new KhoaHoc();
                kh.makh = id[i];
                kh.nam = Convert.ToInt32(id[i]);
                kh.ngaybatdau = startTime[i];
                kh.ngayketthuc = startTime[i].AddYears(4);
                KhoaHocBUS.ThemKhoaHoc(kh);
            }
        }
        public static void ThemLop()
        {
            List<Nganh> nganhs = NganhBUS.LayDanhSach();
            List<KhoaHoc> khoahocs = KhoaHocBUS.LayDanhSach();
            foreach (Nganh nganh in nganhs)
            {
                foreach (KhoaHoc khoahoc in khoahocs)
                {
                    Lop lop = new Lop();
                    lop.khoahoc = khoahoc.makh;
                    lop.nganh = nganh.masonganh;
                    lop.malop = nganh.masonganh + khoahoc.makh;
                    lop.tenlop = nganh.tennganh + " " + khoahoc.makh;
                    LopBUS.ThemLop(lop);
                }
            }
        }
        public static void ThemHocKy()
        {
            HocKy hk = new HocKy();         
            hk.tenhocky = "Học kỳ 1";
            HocKyBUS.ThemHocKy(hk);
            hk = new HocKy();
            hk.tenhocky = "Học kỳ 2";
            HocKyBUS.ThemHocKy(hk);
            hk = new HocKy();
            hk.tenhocky = "Học kỳ hè";
            HocKyBUS.ThemHocKy(hk);
        }
        public static void ThemSinhVien()
        {
             string[] hos = new string[] {"Nguyễn","Trần","Võ","Hoàng","Lê","Trịnh","lý","Đinh"};
             string[] lots = new string[] {"Văn","Thị","Thành","Thái","Đức"};
             string[] tens = new string[] {"Liễu","Lâm","Nhựt","Phúc","Hòa","Hiệp","Hiếu","Chiến","Thắng","Nghĩa","Vọng","Quỳnh","Như"};
             List<Lop> lop = LopBUS.LayDanhSach();
             Random random = new Random();
            int idSV=SinhVienBUS.LayDanhSach().Count;
             for(int i=0;i<hos.Length;i++)
                 for(int j=0;j<lots.Length;j++)
                     for (int z = 0; z < tens.Length; z++)
                     {
                         SinhVien sv = new SinhVien();
                         sv.cmnd = random.Next(4242, 4242421) + random.Next(4242, 4242421)+"";
                         sv.gioitinh = random.Next(0, 1) ;
                         sv.hktt = "TPHCM";
                         sv.lop = lop[random.Next(0, lop.Count - 1)].malop;
                         sv.ngaysinh = DateTime.Now.AddYears(-18);
                         sv.nguyenquan = "TPHCM";
                         sv.mssv = sv.lop + idSV;
                         sv.hoten = hos[i] + " " + lots[j] + " " + tens[z];
                         SinhVienBUS.ThemSinhVien(sv);
                         idSV++;
                     }
        }
        public static void ThemMonHoc()
        {
            MonHoc mh = new MonHoc();
            mh.mamonhoc = "LSD";
            mh.tenmonhoc = "Lịch sử đảng";
            MonHocBUS.ThemMonHoc(mh);
            mh = new MonHoc();
            mh.mamonhoc = "KTCT";
            mh.tenmonhoc = "Kinh tế chính trị";
            MonHocBUS.ThemMonHoc(mh);
            mh = new MonHoc();
            mh.mamonhoc = "LTHDT";
            mh.tenmonhoc = "Lập trình hướng đối tượng";
            MonHocBUS.ThemMonHoc(mh);
            mh = new MonHoc();
            mh.mamonhoc = "KCPM";
            mh.tenmonhoc = "Kiểm chứng phần mềm";
            MonHocBUS.ThemMonHoc(mh);
        }
        public static void themLopMonHoc()
        {
            List<Lop> lops = LopBUS.LayDanhSach();
            List<MonHoc> monhocs = MonHocBUS.LayDanhSach();
            foreach (Lop lop in lops)
            {
                if (lop.nganh == "HHTT" || lop.nganh == "KHMT")
                    foreach (MonHoc monhoc in monhocs)
                    {
                        Lop_MonHoc l = new Lop_MonHoc();
                        l.masolop = lop.malop;
                        l.masomonhoc = monhoc.mamonhoc;
                        LopMonHocBUS.ThemLop_MonHoc(l);
                    }
                else
                {
                    foreach (MonHoc monhoc in monhocs)
                    {
                        if (monhoc.mamonhoc == "LSD")
                        {
                            Lop_MonHoc l = new Lop_MonHoc();
                            l.masolop = lop.malop;
                            l.masomonhoc = monhoc.mamonhoc;
                            LopMonHocBUS.ThemLop_MonHoc(l);
                        }
                    }
                }
            }
        }
        public static void ThemDangKyHoc()
        {
            List<SinhVien>sinhviens=SinhVienBUS.LayDanhSach();
            List<Lop_MonHoc> monhocs = LopMonHocBUS.LayDanhSach();
            List<HocKy>hockys=HocKyBUS.LayDanhSach();
            Random rd=new Random();
            for(int i=0;i<sinhviens.Count;i++)
            {
                for (int j = 0; j < monhocs.Count; j++)
                {
                    if (monhocs[j].masolop == sinhviens[i].lop)
                    {
                        DangKyHoc dkh = new DangKyHoc();
                        dkh.hocky = hockys[rd.Next(0, hockys.Count - 1)].mahocky;
                        dkh.mamonhoc = monhocs[j].id;
                        dkh.mssv = sinhviens[i].mssv;
                        DangKyHocBUS.ThemDangKyHoc(dkh);
                    }
                }
            }
        }
        public static void ThemDiem()
        {
            Random rd=new Random();
            List<DangKyHoc> lstDangkyHoc = DangKyHocBUS.LayDanhSach();
            foreach (DangKyHoc dk in lstDangkyHoc)
            {
                double giuaky = rd.Next(0, 10);
                double cuoiky = rd.Next(0, 10);
                double tb = (giuaky + cuoiky) / 2;
                Diem d = new Diem();
                d.diemgiuaky = giuaky;
                d.diemcuoiky = cuoiky;
                d.diemtrungbinh = tb;
                d.madangkyhoc = dk.madkh;
                DiemBUS.ThemDiem(d);
            }
        }
    }
}
